diff --git a/system/.htaccess b/system/.htaccess
index 6c63ed4..97c65d2 100644
--- a/system/.htaccess
+++ b/system/.htaccess
@@ -1,6 +1,6 @@
 <IfModule authz_core_module>
-    Require all denied
+	Require all denied
 </IfModule>
 <IfModule !authz_core_module>
-    Deny from all
+	Deny from all
 </IfModule>
\ No newline at end of file
diff --git a/system/core/Log.php b/system/core/Log.php
index e662708..718f505 100644
--- a/system/core/Log.php
+++ b/system/core/Log.php
@@ -84,7 +84,7 @@
 	 *
 	 * @var array
 	 */
-	protected $_levels		= array('ERROR' => 1, 'DEBUG' => 2,  'INFO' => 3, 'ALL' => 4);
+	protected $_levels		= array('ERROR' => 1, 'DEBUG' => 2, 'INFO' => 3, 'ALL' => 4);
 
 	/**
 	 * Initialize Logging class
@@ -145,7 +145,6 @@
 			return FALSE;
 		}
 
-
 		$filepath = $this->_log_path.'log-'.date('Y-m-d').'.php';
 		$message  = '';
 
diff --git a/system/core/Security.php b/system/core/Security.php
index b8e66c0..c415544 100644
--- a/system/core/Security.php
+++ b/system/core/Security.php
@@ -368,7 +368,7 @@
 		}
 		else
 		{
-			$str = str_replace(array('<?', '?'.'>'),  array('&lt;?', '?&gt;'), $str);
+			$str = str_replace(array('<?', '?'.'>'), array('&lt;?', '?&gt;'), $str);
 		}
 
 		/*
@@ -382,7 +382,6 @@
 			'applet', 'alert', 'document', 'write', 'cookie', 'window'
 		);
 
-
 		foreach ($words as $word)
 		{
 			$word = implode('\s*', str_split($word)).'\s*';
diff --git a/system/database/DB_query_builder.php b/system/database/DB_query_builder.php
index e77fba6..b0e86ed 100644
--- a/system/database/DB_query_builder.php
+++ b/system/database/DB_query_builder.php
@@ -1508,7 +1508,7 @@
 				$row = $clean;
 			}
 
-			$this->qb_set[] =  '('.implode(',', $row).')';
+			$this->qb_set[] = '('.implode(',', $row).')';
 		}
 
 		foreach ($keys as $k)
diff --git a/system/database/drivers/mysql/mysql_driver.php b/system/database/drivers/mysql/mysql_driver.php
index 1189f30..5af4437 100644
--- a/system/database/drivers/mysql/mysql_driver.php
+++ b/system/database/drivers/mysql/mysql_driver.php
@@ -323,12 +323,12 @@
 		if (is_array($str))
 		{
 			foreach ($str as $key => $val)
-	   		{
+			{
 				$str[$key] = $this->escape_str($val, $like);
-	   		}
+			}
 
-	   		return $str;
-	   	}
+			return $str;
+		}
 
 		$str = is_resource($this->conn_id) ? mysql_real_escape_string($str, $this->conn_id) : addslashes($str);
 
@@ -481,7 +481,7 @@
 			{
 				if ($field !== $index)
 				{
-					$final[$field][] =  'WHEN '.$index.' = '.$val[$index].' THEN '.$val[$field];
+					$final[$field][] = 'WHEN '.$index.' = '.$val[$index].' THEN '.$val[$field];
 				}
 			}
 		}
diff --git a/system/database/drivers/mysqli/mysqli_driver.php b/system/database/drivers/mysqli/mysqli_driver.php
index 78a4bef..17f025f 100644
--- a/system/database/drivers/mysqli/mysqli_driver.php
+++ b/system/database/drivers/mysqli/mysqli_driver.php
@@ -466,7 +466,7 @@
 			{
 				if ($field !== $index)
 				{
-					$final[$field][] =  'WHEN '.$index.' = '.$val[$index].' THEN '.$val[$field];
+					$final[$field][] = 'WHEN '.$index.' = '.$val[$index].' THEN '.$val[$field];
 				}
 			}
 		}
diff --git a/system/database/drivers/odbc/odbc_driver.php b/system/database/drivers/odbc/odbc_driver.php
index a01a9d6..29b2281 100644
--- a/system/database/drivers/odbc/odbc_driver.php
+++ b/system/database/drivers/odbc/odbc_driver.php
@@ -336,7 +336,7 @@
 	 * @param	string	$table
 	 * @param	array	$values
 	 * @return	string
-         */
+	 */
 	protected function _update($table, $values)
 	{
 		$this->qb_limit = FALSE;
diff --git a/system/database/drivers/pdo/pdo_driver.php b/system/database/drivers/pdo/pdo_driver.php
index 923f0e1..d2dfa8b 100644
--- a/system/database/drivers/pdo/pdo_driver.php
+++ b/system/database/drivers/pdo/pdo_driver.php
@@ -387,7 +387,7 @@
 			{
 				if ($field !== $index)
 				{
-					$final[$field][] =  'WHEN '.$index.' = '.$val[$index].' THEN '.$val[$field];
+					$final[$field][] = 'WHEN '.$index.' = '.$val[$index].' THEN '.$val[$field];
 				}
 			}
 		}
diff --git a/system/database/drivers/pdo/subdrivers/pdo_cubrid_driver.php b/system/database/drivers/pdo/subdrivers/pdo_cubrid_driver.php
index c2112d6..7e703e7 100644
--- a/system/database/drivers/pdo/subdrivers/pdo_cubrid_driver.php
+++ b/system/database/drivers/pdo/subdrivers/pdo_cubrid_driver.php
@@ -185,7 +185,7 @@
 			{
 				if ($field !== $index)
 				{
-					$final[$field][] =  'WHEN '.$index.' = '.$val[$index].' THEN '.$val[$field];
+					$final[$field][] = 'WHEN '.$index.' = '.$val[$index].' THEN '.$val[$field];
 				}
 			}
 		}
diff --git a/system/database/drivers/pdo/subdrivers/pdo_ibm_driver.php b/system/database/drivers/pdo/subdrivers/pdo_ibm_driver.php
index 4d84368..2ef97cd 100644
--- a/system/database/drivers/pdo/subdrivers/pdo_ibm_driver.php
+++ b/system/database/drivers/pdo/subdrivers/pdo_ibm_driver.php
@@ -187,7 +187,7 @@
 	 * @param	string	$table
 	 * @param	array	$values
 	 * @return	string
-         */
+	 */
 	protected function _update($table, $values)
 	{
 		$this->qb_limit = FALSE;
diff --git a/system/database/drivers/pdo/subdrivers/pdo_informix_driver.php b/system/database/drivers/pdo/subdrivers/pdo_informix_driver.php
index 1db5205..cfb474e 100644
--- a/system/database/drivers/pdo/subdrivers/pdo_informix_driver.php
+++ b/system/database/drivers/pdo/subdrivers/pdo_informix_driver.php
@@ -237,7 +237,7 @@
 	 * @param	string	$table
 	 * @param	array	$values
 	 * @return	string
-         */
+	 */
 	protected function _update($table, $values)
 	{
 		$this->qb_limit = FALSE;
diff --git a/system/database/drivers/pdo/subdrivers/pdo_mysql_driver.php b/system/database/drivers/pdo/subdrivers/pdo_mysql_driver.php
index b54765d..a293972 100644
--- a/system/database/drivers/pdo/subdrivers/pdo_mysql_driver.php
+++ b/system/database/drivers/pdo/subdrivers/pdo_mysql_driver.php
@@ -221,7 +221,7 @@
 			{
 				if ($field !== $index)
 				{
-					$final[$field][] =  'WHEN '.$index.' = '.$val[$index].' THEN '.$val[$field];
+					$final[$field][] = 'WHEN '.$index.' = '.$val[$index].' THEN '.$val[$field];
 				}
 			}
 		}
diff --git a/system/database/drivers/pdo/subdrivers/pdo_odbc_driver.php b/system/database/drivers/pdo/subdrivers/pdo_odbc_driver.php
index 05b34fa..c940a7b 100644
--- a/system/database/drivers/pdo/subdrivers/pdo_odbc_driver.php
+++ b/system/database/drivers/pdo/subdrivers/pdo_odbc_driver.php
@@ -167,7 +167,7 @@
 				.sprintf($this->_like_escape_str, $this->_like_escape_chr);
 		}
 
-                return $sql;
+		return $sql;
 	}
 
 	// --------------------------------------------------------------------
@@ -195,7 +195,7 @@
 	 * @param	string	$table
 	 * @param	array	$values
 	 * @return	string
-         */
+	 */
 	protected function _update($table, $values)
 	{
 		$this->qb_limit = FALSE;
diff --git a/system/database/drivers/pdo/subdrivers/pdo_pgsql_driver.php b/system/database/drivers/pdo/subdrivers/pdo_pgsql_driver.php
index 803cc24..1300772 100644
--- a/system/database/drivers/pdo/subdrivers/pdo_pgsql_driver.php
+++ b/system/database/drivers/pdo/subdrivers/pdo_pgsql_driver.php
@@ -251,7 +251,7 @@
 	 * @param	string	$table
 	 * @param	array	$values
 	 * @return	string
-         */
+	 */
 	protected function _update($table, $values)
 	{
 		$this->qb_limit = FALSE;
@@ -282,7 +282,7 @@
 			{
 				if ($field !== $index)
 				{
-					$final[$field][] =  'WHEN '.$val[$index].' THEN '.$val[$field];
+					$final[$field][] = 'WHEN '.$val[$index].' THEN '.$val[$field];
 				}
 			}
 		}
diff --git a/system/database/drivers/pdo/subdrivers/pdo_sqlite_driver.php b/system/database/drivers/pdo/subdrivers/pdo_sqlite_driver.php
index cd69650..568044e 100644
--- a/system/database/drivers/pdo/subdrivers/pdo_sqlite_driver.php
+++ b/system/database/drivers/pdo/subdrivers/pdo_sqlite_driver.php
@@ -190,7 +190,7 @@
 	 *
 	 * @param	string	$table
 	 * @return	string
-         */
+	 */
 	protected function _truncate($table)
 	{
 		return 'DELETE FROM '.$table;
diff --git a/system/database/drivers/pdo/subdrivers/pdo_sqlsrv_driver.php b/system/database/drivers/pdo/subdrivers/pdo_sqlsrv_driver.php
index b28197c..ec02526 100644
--- a/system/database/drivers/pdo/subdrivers/pdo_sqlsrv_driver.php
+++ b/system/database/drivers/pdo/subdrivers/pdo_sqlsrv_driver.php
@@ -250,7 +250,7 @@
 	 * @param	string	$table
 	 * @param	array	$values
 	 * @return	string
-         */
+	 */
 	protected function _update($table, $values)
 	{
 		$this->qb_limit = FALSE;
diff --git a/system/database/drivers/postgre/postgre_driver.php b/system/database/drivers/postgre/postgre_driver.php
index 02db808..2a78a57 100644
--- a/system/database/drivers/postgre/postgre_driver.php
+++ b/system/database/drivers/postgre/postgre_driver.php
@@ -579,7 +579,7 @@
 			{
 				if ($field !== $index)
 				{
-					$final[$field][] =  'WHEN '.$val[$index].' THEN '.$val[$field];
+					$final[$field][] = 'WHEN '.$val[$index].' THEN '.$val[$field];
 				}
 			}
 		}
diff --git a/system/helpers/form_helper.php b/system/helpers/form_helper.php
index e7bea92..c7e6d49 100644
--- a/system/helpers/form_helper.php
+++ b/system/helpers/form_helper.php
@@ -814,7 +814,6 @@
 
 // ------------------------------------------------------------------------
 
-
 if ( ! function_exists('form_error'))
 {
 	/**
diff --git a/system/helpers/inflector_helper.php b/system/helpers/inflector_helper.php
index 59cb296..68af820 100644
--- a/system/helpers/inflector_helper.php
+++ b/system/helpers/inflector_helper.php
@@ -58,33 +58,33 @@
 		}
 
 		$singular_rules = array(
-			'/(matr)ices$/'         => '\1ix',
-			'/(vert|ind)ices$/'     => '\1ex',
-			'/^(ox)en/'             => '\1',
-			'/(alias)es$/'          => '\1',
-			'/([octop|vir])i$/'     => '\1us',
-			'/(cris|ax|test)es$/'   => '\1is',
-			'/(shoe)s$/'            => '\1',
-			'/(o)es$/'              => '\1',
-			'/(bus|campus)es$/'     => '\1',
-			'/([m|l])ice$/'         => '\1ouse',
-			'/(x|ch|ss|sh)es$/'     => '\1',
-			'/(m)ovies$/'           => '\1\2ovie',
-			'/(s)eries$/'           => '\1\2eries',
-			'/([^aeiouy]|qu)ies$/'  => '\1y',
-			'/([lr])ves$/'          => '\1f',
-			'/(tive)s$/'            => '\1',
-			'/(hive)s$/'            => '\1',
-			'/([^f])ves$/'          => '\1fe',
-			'/(^analy)ses$/'        => '\1sis',
+			'/(matr)ices$/'		=> '\1ix',
+			'/(vert|ind)ices$/'	=> '\1ex',
+			'/^(ox)en/'		=> '\1',
+			'/(alias)es$/'		=> '\1',
+			'/([octop|vir])i$/'	=> '\1us',
+			'/(cris|ax|test)es$/'	=> '\1is',
+			'/(shoe)s$/'		=> '\1',
+			'/(o)es$/'		=> '\1',
+			'/(bus|campus)es$/'	=> '\1',
+			'/([m|l])ice$/'		=> '\1ouse',
+			'/(x|ch|ss|sh)es$/'	=> '\1',
+			'/(m)ovies$/'		=> '\1\2ovie',
+			'/(s)eries$/'		=> '\1\2eries',
+			'/([^aeiouy]|qu)ies$/'	=> '\1y',
+			'/([lr])ves$/'		=> '\1f',
+			'/(tive)s$/'		=> '\1',
+			'/(hive)s$/'		=> '\1',
+			'/([^f])ves$/'		=> '\1fe',
+			'/(^analy)ses$/'	=> '\1sis',
 			'/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/' => '\1\2sis',
-			'/([ti])a$/'            => '\1um',
-			'/(p)eople$/'           => '\1\2erson',
-			'/(m)en$/'              => '\1an',
-			'/(s)tatuses$/'         => '\1\2tatus',
-			'/(c)hildren$/'         => '\1\2hild',
-			'/(n)ews$/'             => '\1\2ews',
-			'/([^us])s$/'           => '\1',
+			'/([ti])a$/'		=> '\1um',
+			'/(p)eople$/'		=> '\1\2erson',
+			'/(m)en$/'		=> '\1an',
+			'/(s)tatuses$/'		=> '\1\2tatus',
+			'/(c)hildren$/'		=> '\1\2hild',
+			'/(n)ews$/'		=> '\1\2ews',
+			'/([^us])s$/'		=> '\1'
 		);
 
 		foreach ($singular_rules as $rule => $replacement)
diff --git a/system/helpers/smiley_helper.php b/system/helpers/smiley_helper.php
index 4b49175..7293999 100644
--- a/system/helpers/smiley_helper.php
+++ b/system/helpers/smiley_helper.php
@@ -120,7 +120,6 @@
 
 // ------------------------------------------------------------------------
 
-
 if ( ! function_exists('get_clickable_smileys'))
 {
 	/**
diff --git a/system/helpers/text_helper.php b/system/helpers/text_helper.php
index cce6592..7052387 100644
--- a/system/helpers/text_helper.php
+++ b/system/helpers/text_helper.php
@@ -139,7 +139,7 @@
 				*/
 				if (count($temp) === 1)
 				{
-					$out  .= '&#'.array_shift($temp).';';
+					$out .= '&#'.array_shift($temp).';';
 					$count = 1;
 				}
 
diff --git a/system/helpers/url_helper.php b/system/helpers/url_helper.php
index 0aa358a..14c216a 100644
--- a/system/helpers/url_helper.php
+++ b/system/helpers/url_helper.php
@@ -293,7 +293,7 @@
 			{
 				foreach ($attributes as $key => $val)
 				{
-					$x[] =  ' '.$key.'="';
+					$x[] = ' '.$key.'="';
 					for ($i = 0, $l = strlen($val); $i < $l; $i++)
 					{
 						$x[] = '|'.ord($val[$i]);
diff --git a/system/language/english/form_validation_lang.php b/system/language/english/form_validation_lang.php
index 52ca21f..8788f5d 100644
--- a/system/language/english/form_validation_lang.php
+++ b/system/language/english/form_validation_lang.php
@@ -43,7 +43,7 @@
 $lang['integer']				= 'The %s field must contain an integer.';
 $lang['regex_match']			= 'The %s field is not in the correct format.';
 $lang['matches']				= 'The %s field does not match the %s field.';
-$lang['differs']        		= 'The %s field must differ from the %s field.';
+$lang['differs']				= 'The %s field must differ from the %s field.';
 $lang['is_unique'] 				= 'The %s field must contain a unique value.';
 $lang['is_natural']				= 'The %s field must only contain digits.';
 $lang['is_natural_no_zero']		= 'The %s field must only contain digits and must be greater than zero.';
diff --git a/system/language/english/migration_lang.php b/system/language/english/migration_lang.php
index 689a729..33bd026 100644
--- a/system/language/english/migration_lang.php
+++ b/system/language/english/migration_lang.php
@@ -26,14 +26,14 @@
  */
 defined('BASEPATH') OR exit('No direct script access allowed');
 
-$lang['migration_none_found']			= 'No migrations were found.';
-$lang['migration_not_found']			= 'No migration could be found with the version number: %d.';
-$lang['migration_sequence_gap']         = 'There is a gap in the migration sequence near version number: %d.';
-$lang['migration_multiple_version']		= 'There are multiple migrations with the same version number: %d.';
+$lang['migration_none_found']		= 'No migrations were found.';
+$lang['migration_not_found']		= 'No migration could be found with the version number: %d.';
+$lang['migration_sequence_gap']		= 'There is a gap in the migration sequence near version number: %d.';
+$lang['migration_multiple_version']	= 'There are multiple migrations with the same version number: %d.';
 $lang['migration_class_doesnt_exist']	= 'The migration class "%s" could not be found.';
 $lang['migration_missing_up_method']	= 'The migration class "%s" is missing an "up" method.';
 $lang['migration_missing_down_method']	= 'The migration class "%s" is missing a "down" method.';
-$lang['migration_invalid_filename']		= 'Migration "%s" has an invalid filename.';
+$lang['migration_invalid_filename']	= 'Migration "%s" has an invalid filename.';
 
 /* End of file migration_lang.php */
 /* Location: ./system/language/english/migration_lang.php */
\ No newline at end of file
diff --git a/system/libraries/Cache/drivers/Cache_file.php b/system/libraries/Cache/drivers/Cache_file.php
index 5d37038..9fd0533 100644
--- a/system/libraries/Cache/drivers/Cache_file.php
+++ b/system/libraries/Cache/drivers/Cache_file.php
@@ -74,7 +74,7 @@
 
 		$data = unserialize(file_get_contents($this->_cache_path.$id));
 
-		if ($data['ttl'] > 0 && time() >  $data['time'] + $data['ttl'])
+		if ($data['ttl'] > 0 && time() > $data['time'] + $data['ttl'])
 		{
 			unlink($this->_cache_path.$id);
 			return FALSE;
diff --git a/system/libraries/Cache/drivers/Cache_wincache.php b/system/libraries/Cache/drivers/Cache_wincache.php
index 383b3af..9154f3f 100644
--- a/system/libraries/Cache/drivers/Cache_wincache.php
+++ b/system/libraries/Cache/drivers/Cache_wincache.php
@@ -127,10 +127,10 @@
 			$hitcount = $stored['ucache_entries'][1]['hitcount'];
 
 			return array(
-				'expire'    => $ttl - $age,
-				'hitcount'  => $hitcount,
-				'age'       => $age,
-				'ttl'       => $ttl
+				'expire'	=> $ttl - $age,
+				'hitcount'	=> $hitcount,
+				'age'		=> $age,
+				'ttl'		=> $ttl
 			);
 		}
 
diff --git a/system/libraries/Calendar.php b/system/libraries/Calendar.php
index caa496a..ec2b7bc 100644
--- a/system/libraries/Calendar.php
+++ b/system/libraries/Calendar.php
@@ -160,7 +160,7 @@
 		// Set and validate the supplied month/year
 		if (empty($year))
 		{
-			$year  = date('Y', $this->local_time);
+			$year = date('Y', $this->local_time);
 		}
 		elseif (strlen($year) === 1)
 		{
@@ -219,8 +219,8 @@
 		// "previous" month link
 		if ($this->show_next_prev === TRUE)
 		{
-			// Add a trailing slash to the  URL if needed
-			$this->next_prev_url = preg_replace('/(.+?)\/*$/', '\\1/',  $this->next_prev_url);
+			// Add a trailing slash to the URL if needed
+			$this->next_prev_url = preg_replace('/(.+?)\/*$/', '\\1/', $this->next_prev_url);
 
 			$adjusted_date = $this->adjust_date($month - 1, $year);
 			$out .= str_replace('{previous_url}', $this->next_prev_url.$adjusted_date['year'].'/'.$adjusted_date['month'], $this->temp['heading_previous_cell'])."\n";
@@ -444,7 +444,7 @@
 	 */
 	public function default_template()
 	{
-		return  array(
+		return array(
 			'table_open'				=> '<table border="0" cellpadding="4" cellspacing="0">',
 			'heading_row_start'			=> '<tr>',
 			'heading_previous_cell'		=> '<th><a href="{previous_url}">&lt;&lt;</a></th>',
@@ -490,7 +490,7 @@
 
 		$today = array('cal_cell_start_today', 'cal_cell_content_today', 'cal_cell_no_content_today', 'cal_cell_end_today');
 
-		foreach (array('table_open', 'table_close', 'heading_row_start', 'heading_previous_cell', 'heading_title_cell', 'heading_next_cell', 'heading_row_end', 'week_row_start', 'week_day_cell', 'week_row_end', 'cal_row_start', 'cal_cell_start', 'cal_cell_content', 'cal_cell_no_content',  'cal_cell_blank', 'cal_cell_end', 'cal_row_end', 'cal_cell_start_today', 'cal_cell_content_today', 'cal_cell_no_content_today', 'cal_cell_end_today') as $val)
+		foreach (array('table_open', 'table_close', 'heading_row_start', 'heading_previous_cell', 'heading_title_cell', 'heading_next_cell', 'heading_row_end', 'week_row_start', 'week_day_cell', 'week_row_end', 'cal_row_start', 'cal_cell_start', 'cal_cell_content', 'cal_cell_no_content', 'cal_cell_blank', 'cal_cell_end', 'cal_row_end', 'cal_cell_start_today', 'cal_cell_content_today', 'cal_cell_no_content_today', 'cal_cell_end_today') as $val)
 		{
 			if (preg_match('/\{'.$val.'\}(.*?)\{\/'.$val.'\}/si', $this->template, $match))
 			{
diff --git a/system/libraries/Form_validation.php b/system/libraries/Form_validation.php
index b7bd280..e4eac04 100644
--- a/system/libraries/Form_validation.php
+++ b/system/libraries/Form_validation.php
@@ -1443,7 +1443,7 @@
 	 */
 	public function encode_php_tags($str)
 	{
-		return str_replace(array('<?', '?>'),  array('&lt;?', '?&gt;'), $str);
+		return str_replace(array('<?', '?>'), array('&lt;?', '?&gt;'), $str);
 	}
 
 	// --------------------------------------------------------------------
diff --git a/system/libraries/Ftp.php b/system/libraries/Ftp.php
index 60c03b5..7f58fee 100644
--- a/system/libraries/Ftp.php
+++ b/system/libraries/Ftp.php
@@ -460,7 +460,7 @@
 		}
 
 		// Add a trailing slash to the file path if needed
-		$filepath = preg_replace('/(.+?)\/*$/', '\\1/',  $filepath);
+		$filepath = preg_replace('/(.+?)\/*$/', '\\1/', $filepath);
 
 		$list = $this->list_files($filepath);
 
@@ -636,7 +636,6 @@
 					'xml'
 				);
 
-
 		return in_array($ext, $text_types) ? 'ascii' : 'binary';
 	}
 
diff --git a/system/libraries/Image_lib.php b/system/libraries/Image_lib.php
index 7f937f9..46a9c12 100644
--- a/system/libraries/Image_lib.php
+++ b/system/libraries/Image_lib.php
@@ -1373,7 +1373,6 @@
 		if ($image_type === '')
 			$image_type = $this->image_type;
 
-
 		switch ($image_type)
 		{
 			case	 1 :
diff --git a/system/libraries/Javascript.php b/system/libraries/Javascript.php
index 9a15cdd..420b623 100644
--- a/system/libraries/Javascript.php
+++ b/system/libraries/Javascript.php
@@ -586,7 +586,6 @@
 		return $this->js->_show($element, $speed, $callback);
 	}
 
-
 	// --------------------------------------------------------------------
 
 	/**
diff --git a/system/libraries/Migration.php b/system/libraries/Migration.php
index bf2d18e..e591ab6 100644
--- a/system/libraries/Migration.php
+++ b/system/libraries/Migration.php
@@ -143,8 +143,8 @@
 
 		// Migration basename regex
 		$this->_migration_regex = ($this->_migration_type === 'timestamp')
-		                        ? '/^\d{14}_(\w+)$/'
-		                        : '/^\d{3}_(\w+)$/';
+			? '/^\d{14}_(\w+)$/'
+			: '/^\d{3}_(\w+)$/';
 
 		// Make sure a valid migration numbering type was set.
 		if ( ! in_array($this->_migration_type, array('sequential', 'timestamp')))
diff --git a/system/libraries/Table.php b/system/libraries/Table.php
index 886fb65..3d53b1c 100644
--- a/system/libraries/Table.php
+++ b/system/libraries/Table.php
@@ -527,7 +527,7 @@
 	 */
 	protected function _default_template()
 	{
-		return  array(
+		return array(
 				'table_open'		=> '<table border="0" cellpadding="4" cellspacing="0">',
 
 				'thead_open'		=> '<thead>',
diff --git a/system/libraries/Upload.php b/system/libraries/Upload.php
index b3e9f75..5d163fb 100644
--- a/system/libraries/Upload.php
+++ b/system/libraries/Upload.php
@@ -294,7 +294,6 @@
 					'client_name'			=> ''
 				);
 
-
 		foreach ($defaults as $key => $val)
 		{
 			if (isset($config[$key]))
